home *** CD-ROM | disk | FTP | other *** search
/ Eagles Nest BBS 8 / Eagles_Nest_Mac_Collection_Disc_8.TOAST / Developer Environments / MacCjr / MacC Jr / QDDemo Folder / QDDemo.c
Encoding:
C/C++ Source or Header  |  1987-01-07  |  3.4 KB  |  130 lines  |  [TEXT/EDIT]

  1. // QDDemo.c
  2. // Copyright 1985, 1987 Consulair Corporation.  All rights reserved.
  3. /* This program creates a picture without drawing it on the screen, writes
  4. it out to the file 'PicResFile' as a resource of type 'PICT', and then
  5. reads it in and displays it using DrawPicture.  The logic for reading
  6. and displaying the picture can be used for displaying any 'PICT' resource
  7. including those created by MacPaint.  Finally, it does a copybits just
  8. as an example of the call
  9. */
  10.  
  11. #Options Z
  12.  
  13. #include <stdio.h>
  14. #include <QuickDraw.h>
  15. #include <Window.h>
  16. #include <Resource.h>
  17. #include <Font.h>
  18.  
  19. #define true 1
  20. #define false 0
  21.  
  22. Rect picFrame = {20, 20, 220, 220};        //top,left,bottom,right
  23. Rect ovalRect = {20, 20, 170, 170};        
  24. Rect destRect = {20, 270, 220, 470};
  25. Rect demoRect = {50, 30, 320, 490};
  26.  
  27. main()
  28.   {
  29.   Handle tempH;
  30.   PicHandle ph;
  31.   Rect sourceRect;
  32.   WindowPtr demoWindow;
  33.   short x, y, x1, y1;
  34.   short resFile;
  35.   short savedFont, savedFace, savedSize;
  36.   
  37.   // Create a picture and store it into a resource file
  38.     
  39.     demoWindow = NewWindow(0, &demoRect, "\pQuickDraw Demo",
  40.                 true, 0, -1, false, 0);
  41.     x = picFrame.left+2;
  42.     y = picFrame.top+2;
  43.     x1 = picFrame.right-54;
  44.     y1 = picFrame.bottom-54;
  45.     savedFont = monaco; 
  46.     savedFace = normalStyle; 
  47.     savedSize = 9; 
  48.     SetPort(demoWindow);
  49.     SetRectRgn(demoWindow->clipRgn,0,0,512,342);
  50.     
  51.     PenNormal();
  52.     PenSize(2,2);
  53.     ph = OpenPicture(&picFrame);
  54.     while ((x1 - x - 4) > 0)
  55.       {
  56.       MoveTo(x, (y+y1)/2);
  57.       LineTo((x+x1)/2, y);
  58.       LineTo(x1, (y+y1)/2);
  59.       LineTo((x+x1)/2, y1);
  60.       LineTo(x, (y+y1)/2);
  61.       x +=4;
  62.       x1 -=4;
  63.       y +=4;
  64.       y1 -=4;
  65.       }
  66.  
  67.     x = picFrame.left;
  68.     y = picFrame.top;
  69.     x1 = picFrame.right-50;
  70.     y1 = picFrame.bottom-50;
  71.     
  72.     TextFont(systemFont);
  73.     TextFace(boldStyle);
  74.     TextSize(12);
  75.     MoveTo(picFrame.right-80,picFrame.bottom-40);
  76.     DrawString("\pDiamond");    
  77.     FrameOval(&ovalRect);
  78.     SetRect(&ovalRect, x1-36, y1-8, x1+40, y1+20); //left,top,right,bottom
  79.     FrameRoundRect(&ovalRect,15,15);
  80.     ClosePicture();
  81.  
  82.     demoWindow->txFont = savedFont; 
  83.     demoWindow->txFace = savedFace; 
  84.     demoWindow->txSize = savedSize; 
  85.     
  86.     // Now Write out to resource file
  87.     
  88.     CreateResFile("\pPicResFile"); // create it if not already there
  89.     resFile = OpenResFile("\pPicResFile");
  90.     
  91.     if (tempH = GetNamedResource('PICT', "\pPictDemo"))
  92.       { // remove old copy
  93.       RmveResource(tempH);
  94.       DisposHandle(tempH);
  95.       }
  96.       
  97.     AddResource(ph, 'PICT', UniqueID('PICT'), "\pPictDemo");
  98.     CloseResFile(resFile);
  99.     KillPicture(ph);
  100.     
  101.   // Now open the Resource file, and read the picture into picFrame
  102.   
  103.      resFile = OpenResFile("\pPicResFile");
  104.      if (ph = (PicHandle)GetNamedResource('PICT', "\pPictDemo"))
  105.        DrawPicture(ph, &(*ph)->picFrame);
  106.      
  107.      sourceRect = (*ph)->picFrame;
  108.    //  Compensate for QD bug in CopyBits by adding 1 bit to rectangle
  109.      InsetRect(&sourceRect,-1,-1);        
  110.      destRect = sourceRect;
  111.      OffsetRect(&destRect,220,0);
  112.  
  113.    // Throw in an example of CopyBits
  114.      CopyBits(&demoWindow->portBits,    // srcBits
  115.        &demoWindow->portBits,        // dstBits
  116.        &sourceRect,            // srcRect
  117.        &destRect,            // dstRect
  118.        srcCopy,                // mode
  119.        0);                // no mask region
  120.        
  121.      CloseResFile(resFile);
  122.      
  123.    MoveTo(20,240);
  124.    DrawString("\pClick the mouse button to exit");  
  125.    while (!Button());
  126.    }
  127.    
  128.  
  129.  
  130.